This disclosure relates generally to correcting problems associated with booting a computer and, more particularly, to a method and computer for self-healing basic input output system (BIOS) initialization code.
When a computer or similar component is powered on, or booted, basic input output system (BIOS) initialization code is used by the computer to test its hardware and connectivity and to load all of the necessary operating code that allows the computer to perform needed tasks. The BIOS initialization code, which is stored in non-volatile memory (e.g. random access memory (RAM), read-only memory (ROM), and/or any device that stores digital information), includes a power-on self test (POST) procedure, to ensure that all computer circuitry is functional before running the operating code.
The BIOS initialization code may be accessed by a processor (e.g. central processing unit (CPU), digital signal processor (DSP), microprocessor, microcontroller, microcomputer, and/or any device that manipulates digital information based on programming instructions) when the computer is booted.
The BIOS, in addition to other functions that are loaded (e.g. reading and writing data to various storage systems such as CD-ROM and DVD-ROM drives), allow the computer to perform its vast array of features. The code that gives the computer this ability is called the operating system (OS). The OS is stored in a non-volatile storage module such as a hard disk. When the computer is booted (or reset) the BIOS code is run and, after POST, the BIOS code allows access to the hard disk at an address where code is stored which permits the loading of the OS from the hard disk. After the OS is loaded, a user may begin to access various features found on the OS (e.g. a spreadsheet, etc.) or accessed through the OS (e.g. the world wide web, email, etc.).
When all of the hardware systems and software files are operable, the BIOS and the OS will be running correctly and the user will be able to perform various actions via the computer. If, however, errors occur during the BIOS or OS initialization, the computer may infinitely reboot or hang (lock-up) at the offending code. For example, a user may continuously place and remove add-in cards and/or peripherals (or other components) into and out of the computer. In this situation, the BIOS may get confused and assign resources (e.g. input output (I/O) or DMA (memory) addresses) for an add-in card that the BIOS believes is still in the computer but has actually been removed from the computer. Thus, the computer will allocate new resources for an add-in card that is later placed in the computer. If this situation is repeated enough times, the BIOS will eventually run out of resources and may infinitely reboot or lock-up. Additionally, hardware and software errors may occur during the loading of the OS. For example, mechanical devices (such as a hard disk drive, CD-ROM, DVD-ROM, etc.) may become inoperable because of the problems associated with the structure and operation of mechanical devices. Software may also become corrupt and, for example, may not allow the BIOS code to access the hard disk thereby not allowing the OS to be loaded.
These types of problems are expensive to solve and typically require a field service representative to visit the site where the error occurred and attempt to fix the problem or have a technical support representative attempt to fix the problem over the phone. For example, the technical support representative may remotely attempt to solve the problem by offering common fixes to the problem (i.e. direct the user to remove an add-in card, to disable or remove peripherals, etc.). If the problem cannot be fixed through the guidance of a technical support representative, a field service representative may visit the site and bring diagnostic tools (hardware and software) which display more detailed information to determine what the BIOS was doing at the moment of failure. These solutions are costly, time consuming, and degrade the user""s experience.
The present disclosure, therefore, provides a method and computer for self-healing BIOS initialization code. To this end, the boot initialization progress of the BIOS is recorded and, if the boot initialization code fails, the failed boot initialization code is corrected by the BIOS. The boot initialization progress provides an indication of the location in the BIOS initialization code of where the boot initialization failed.
A major advantage is achieved with the method and computer of the present disclosure since intelligence is added to the BIOS which allows failed boot initialization code to be corrected by the BIOS transparently to the user. When the BIOS cannot correct the failed boot initialization code, however, other action is taken which allows the BIOS to continue to boot or to successfully reboot.
As such, the problems discussed above are minimized allowing for a more efficient solution that increases the user""s experience.